home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Forever 4
/
Atari Forever 4.zip
/
Atari Forever 4.iso
/
SERIE_AI
/
AI_028
/
TMTOOL10.LZH
/
TMTOOL10
/
MAN
/
CAT1
/
PROTOTYP.1
< prev
Wrap
Text File
|
1996-03-04
|
5KB
|
153 lines
PROTOTYP(1) Benutzerkommandos PROTOTYP(1)
N✓NA✓AM✓ME✓E
p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p - Funktionsprototypen von C Funktionen
erstellen
S✓SY✓YN✓NO✓OP✓PS✓SI✓IS✓S
p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p [-✓-e✓eSTRING] [-✓-p✓pMACRO] [-✓-s✓s] datei(en) ...
B✓BE✓ES✓SC✓CH✓HR✓RE✓EI✓IB✓BU✓UN✓NG✓G
p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p erstellt Funktionsprototypen von C Funktionen
und gibt sie auf der Standardausgabe in folgender Form aus:
/**** datei ****/
returntyp funktionsname ( typ par1, typ par2, ... );
...
Aus programmtechnischen Gruenden sind als Eingabedateien nur
echte Dateien erlaubt (also kein Pipes, Tastatureingabe).
Die Eingabeumlenkung ueber STDIN funktioniert jedoch, aber nur
wenn STDIN auf eine echte Datei umgelenkt ist!! Z.B.:
p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p u:\dev\stdin <input.c >output.c
Es funktioniert z.B. nicht:
cat input.c | p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p u:\dev\stdin >output.c
p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p CON: >output.c
p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p u:\dev\tty >output.c
Unter normalem TOS wird dies mittels isatty() festgestellt,
unter MiNT zusaetzlich mittels Fcntl(..,FSTAT) ueber XATTR.mode
(Datei muß das Attribut S_IFREG haben)
Dies ist eine einfache Version und daher muessen folgende
Voraussetzungen fuer eine korrekte Funktionsweise erfuellt sein:
* der C Quelltext muss syntaktisch korrekt sein
* Funktionsdefinitionen muessen im ersten Zeichen einer
Zeile beginnen
* Funktionsdefinitionen duerfen keine Makros mit Parametern
enthalten
* Kommentare ( /* ... */ ) duerfen ueberall dort stehen, wo auch
Leerzeichen erlaubt sind
Folgende 2 Funktionsdefinitionstypen werden erkannt:
* Neue Definitionsform:
returntyp funktionsname ( typ par1, typ par2, ... )
{
...
}
* Alte Definitonsform:
returntyp funktionsname ( par1, par2, ... )
typ par1; typ par2;
{
...
}
Hier ist zu beachten, dass die Parameter in der Funktions-
klammer *NICHT* ausgewertet werden! z.B. wird aus
int test ( eingabe, ausgabe )
int ausgabe, eingabe;
{
...
}
folgende Funktionsdeklaration:
int test ( int ausgabe, int eingabe ); !!!!!
Um diese Bedingungen einzuhalten, hier ein paar Tips:
- Saemtlicher Code, der innerhalb einer Funktion steht,
wird mindestens um ein Zeichen vom linken Rand her
eingerueckt.
- Verwenden sie wenn möglich die neue Art der Funktions-
definition.
O✓OP✓PT✓TI✓IO✓ON✓NE✓EN✓N
Die Optionen muessen am Anfang der Argumentliste stehen und koennen
vom den Parametern durch `--' getrennt werden!
(Somit sind Parameter mit fuehrenden `-' Zeichen moeglich)
Als Beispiel dient die Datei input.c mit folgender Funktion:
long *test(int a, char *s)
{ ... }
-✓-e✓eSTRING Der String STRING wird vor jede Funktiondeklaration
gestellt.
p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p -✓-e✓eEXTERN input.c
ergibt
EXTERN long *test( int a, char *s );
-✓-p✓pMACRO Die Funktionsklammer wird mit dem Makro MACRO
geklammert:
p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p -✓-p✓pPROTO input.c
ergibt
long *test PROTO(( int a, char *s ));
-✓-s✓s Auch von statischen Funktionen wird ein Prototyp
erzeugt. Dabei muss vor der Funktionsklammer
der String `static' stehen.
B✓BE✓EI✓IS✓SP✓PI✓IE✓EL✓L
p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p -✓-e✓e__EXTERN -✓-p✓pP_ -- *.c >proto.h
cat *.c >$TMP\h ; p✓pr✓ro✓ot✓to✓ot✓ty✓yp✓p $TMP\h >proto.h
E✓EN✓NV✓VI✓IR✓RO✓ON✓NM✓ME✓EN✓NT✓T
L✓LA✓AN✓NG✓G Sprache der Fehlermeldungen: bei `german' Deutsch,
sonst Englisch.
Nur wenn L✓LC✓C_A✓AL✓LL✓L und L✓LC✓C_M✓ME✓ES✓SS✓SA✓AG✓GE✓ES✓S nicht existieren.
L✓LC✓C_A✓AL✓LL✓L Wie L✓LA✓AN✓NG✓G, nur wenn L✓LC✓C_M✓ME✓ES✓SS✓SA✓AG✓GE✓ES✓S nicht existiert.
L✓LC✓C_M✓ME✓ES✓SS✓SA✓AG✓GE✓ES✓S Wie L✓LA✓AN✓NG✓G, hat aber Vorrang vor L✓LC✓C_A✓AL✓LL✓L und L✓LA✓AN✓NG✓G
S✓ST✓TD✓DE✓ER✓RR✓R Wenn diese Environment-Variable existiert, wird stderr
(Kanal 2) unverändert benutzt. Ansonsten wird es auf
stdout umgelenkt, sofern es auf ein zeichenorientiertes
Gerät zeigt.
U✓UN✓NI✓IX✓XM✓MO✓OD✓DE✓E Enthält diese Variable das Zeichen `/', werden alle
UNIX-Pfadtrennzeichen (`/') in TOS-Pfadtrennzeichen
(`\') umgewandelt.
A✓AU✓UT✓TO✓OR✓R
Version 1.01
Copyright (c) 1995,1996 ToMST
Thomas Maier, 24.02.96
tomst@eikon.e-technik.tu-muenchen.de